home *** CD-ROM | disk | FTP | other *** search
- Path: sundog.tiac.net!usenet
- From: Darius Taghavy <dart@ycrdi.com>
- Newsgroups: comp.sys.amiga.programmer
- Subject: Multiplatform Development
- Date: 1 Feb 1996 16:55:26 GMT
- Organization: Young Chang R&D Institute
- Message-ID: <4eqr9u$s25@sundog.tiac.net>
- NNTP-Posting-Host: gatekeep.ycrdi.com
- Mime-Version: 1.0
- Content-Type: text/plain; charset=us-ascii
- Content-Transfer-Encoding: 7bit
- X-Mailer: Mozilla 1.1N (Macintosh; I; PPC)
- X-URL: news:comp.sys.amiga.programmer/81563-81662
-
- Does anyone have experience with multiplatform application development?
- I currently have a large Amiga app (not yet released) that I am
- considering to port to one or more of Mac/Be/NT/OS2.
-
- I will keep developing on and for the Amiga, but real life economics
- require me to consider some of these other platforms.
-
- Main questions:
-
- a) Graphics
- what is the graphics API like in these other systems?
- I.e. On the Amiga we use Move(), Draw(),RectFill(),Text() etc.
- all of which use a struct RastPort * as first argument.
- I have already abstracted this layer. For example, I have
- a text display routine that gets (rastport pointer, x,y, text
- pointer) arguments.
- Do these other API's also use a single handle, such as RastPort?
-
- Mac: ?
- NT: ?
- OS2: ?
- Be: ?
-
- b) Event Handling
- I love the event driven way the Amiga works. I heard the Mac
- more or less polls. Is this true? How about other OSes?
- Simplified pseudo code fragments to illustrate points would
- be great! I start:
-
- Amiga:
- Wait(on one or more signals) /* no CPU cycles wasted */
-
- switch on wakeup signal /* shared window port,
- ARexx, timer interrupt etc */
-
- if (window port signal bit)
- {
- While (msg=GetMsg())
- {
- copy msg fields of interest
-
- Reply(Msg)
-
- dispatch window event handlers based on
- imsg->IDCMPWindow
- }
- if (other signal bits)
- {
- ...
- }
-
- Mac: ?
- NT: ?
- OS2: ?
- Be: ?
-
- c) Interrupts/Timers
- My app uses multiple tasks and interrupts. For a non-multi-tasking
- OS I could still work, as I can conditionally compile into a
- single task/multiple interrupt model already.
- Basically, what I need is:
- - *hardware* timer interrupt
- - serial interrupt when receive buffer is full
- - serial interrupt when transmit buffer is full
-
- d) CPU/Memory Architecture
- I love architectures that are based on a linear address
- space using the 68K family. I use a lot of pointers and
- have no intention to ever code for a 16 bit OS.
- I have heard horror stories about Intel processors and
- have been fortunate to never having had to code for one.
- Does NT abstract this somehow? Can you just declare
- long *whatever; and then reference is the same way as on
- the ami? Or do you have to deal with memory banks etc and
- contruct a pointer from that. If I had to call a function
- for every pointer I need it would be too slow and I wouldn't
- even consider such a rediclious environment.
-
- e) Source Code Database
- How do you actually compile for the different targets?
- Since there are no multiplatform compilers on the Amiga
- such as the ones I looked at on Windows/OS2/Mac, how do
- you maintain a single code base? (I do not like "cut and
- paste" development).
-
- What comes to mind is to network the Amiga with the other
- machine(s), then run the compiler on the other machine,
- accessing the files stored on an Amiga filesystem and store
- the object code in separate subdirs (one for each target).
-
- There are other issues. I just typed up the ones that came to
- mind immediately. But this should be enough to get a discussion
- started. A public discussion for the benefit of everyone would be
- great, but if you like to help and stay anonymous for whatever
- reason, I would appreciate private e-mail, even if it's just a
- short hint or two.
-
-
-